package dao;

import java.util.ArrayList;
import java.util.List;

import modele.Indicateur;
import modele.Indicateur_calcule;
import modele.Indicateur_qualitatif;
import modele.Valeur;

import org.hibernate.Criteria;
import org.hibernate.criterion.Restrictions;

import services.persistance.BaseDAO;

public class IndicateurCalculeDao {
	
	public static void ajouterIndicateur(Indicateur_calcule indicateur) {
		System.out.println("Dao " +indicateur.getIdentifiant() + indicateur.getLibelle()+ indicateur.getNiveau_base());

		BaseDAO.getInstance().ajouter(indicateur);

	//	BaseDAO.getInstance().ajouter(valeur);
	}
	public static void ajouterIndicateurQualitatif(Indicateur_qualitatif indicateur) {
		System.out.println("dao  Identifiant indic" +indicateur.getIdentifiant() +
				"dao  libelle indic"+ indicateur.getLibelle()+
				"dao  niveau indic" +indicateur.getNiveau_base()
				+"dao  theme id indic" +indicateur.getTheme().getDescription() );

		BaseDAO.getInstance().ajouter(indicateur);

	//	BaseDAO.getInstance().ajouter(valeur);
	}
	public static void modifierIndicateur(Indicateur indicateur) {
		BaseDAO.getInstance().modifier(indicateur);
	}

	public static void supprimerIndicateur(Indicateur indicateur) {
		BaseDAO.getInstance().supprimer(indicateur);
	}
	
	public static void supprimerIndicateurTheme(Indicateur indicateur) {
		BaseDAO.getInstance().supprimer(indicateur);
	}

	public static Indicateur_calcule getIndicateurCalcule(long idIndicateur) {
		return (Indicateur_calcule) BaseDAO.getInstance().getObject(Indicateur_calcule.class, idIndicateur);
	}
	
	public static List getListeIndicateursCalcule(long idAdmin)
	{
		List liste = new ArrayList<>();
		liste.add(idAdmin);
		return BaseDAO.getInstance().getListObject("queryListeIndicateursCalculeTheme",liste);
	}
	public static List getListeIndicateursTheme(long idTheme)
	{
		List liste = new ArrayList<>();
		liste.add(idTheme);

		return BaseDAO.getInstance().getListObject("queryListeIndicateursTheme",liste);
	}
	public static List getListeValeursIndicateur(long idIndicateur)
	{		System.out.println("hahouwa f DAO  ohna idindicateur "+idIndicateur);

		List liste = new ArrayList<>();
		liste.add(idIndicateur);

		return BaseDAO.getInstance().getListObject("queryListeValeursIndicateur",liste);
	}
	
	public static List getListeIndicateursQualitatif(long idTheme)
	{
		List liste = new ArrayList<>();
		liste.add(idTheme);
System.out.println("identifiant theme hahouza :"+idTheme);
		return BaseDAO.getInstance().getListObject("queryListeIndicateursQualitatifTheme",liste);
	}
	
	public static ArrayList<Indicateur> rechercherIndicateursParCriteresParAdmin(Indicateur indicateur)
	{
		Criteria criteria = BaseDAO.getInstance().getSession().createCriteria(Indicateur.class);
		criteria.add(Restrictions.like("libelle", "%"+ indicateur.getLibelle() +"%"));
		
		criteria.createCriteria("administrateur").add(Restrictions.eq("identifiant", indicateur.getAdministrateur().getIdentifiant()));
		
		return (ArrayList<Indicateur>) BaseDAO.getInstance().getListObjectByCriteria(criteria);
	}

	
	

}
